package com.ruoyi.project.mapper;

import java.util.List;
import com.ruoyi.project.domain.Contract;
import com.ruoyi.project.domain.ExpenseClaim;

/**
 * 合同信息Mapper接口
 * 
 * @author ruoyi
 * @date 2025-04-06
 */
public interface ContractMapper 
{
    /**
     * 查询合同信息
     * 
     * @param contractId 合同信息主键
     * @return 合同信息
     */
    public Contract selectContractByContractId(Long contractId);

    /**
     * 查询合同信息列表
     * 
     * @param contract 合同信息
     * @return 合同信息集合
     */
    public List<Contract> selectContractList(Contract contract);

    /**
     * 新增合同信息
     * 
     * @param contract 合同信息
     * @return 结果
     */
    public int insertContract(Contract contract);

    /**
     * 修改合同信息
     * 
     * @param contract 合同信息
     * @return 结果
     */
    public int updateContract(Contract contract);

    /**
     * 删除合同信息
     * 
     * @param contractId 合同信息主键
     * @return 结果
     */
    public int deleteContractByContractId(Long contractId);

    /**
     * 批量删除合同信息
     * 
     * @param contractIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteContractByContractIds(Long[] contractIds);

    /**
     * 批量删除合同报销
     * 
     * @param contractIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteExpenseClaimByContractIds(Long[] contractIds);
    
    /**
     * 批量新增合同报销
     * 
     * @param expenseClaimList 合同报销列表
     * @return 结果
     */
    public int batchExpenseClaim(List<ExpenseClaim> expenseClaimList);
    

    /**
     * 通过合同信息主键删除合同报销信息
     * 
     * @param contractId 合同信息ID
     * @return 结果
     */
    public int deleteExpenseClaimByContractId(Long contractId);
}
